#!/bin/bash

# 确保脚本以root权限运行（包安装需要管理员权限）
if [ "$(id -u)" -ne 0 ]; then
    echo "请使用sudo或root权限运行此脚本" >&2
    exit 1
fi

# 更新软件包列表（获取最新的包版本信息）
echo "=== 更新软件包列表 ==="
apt update -y

# 安装基础编译工具
echo -e "\n=== 安装基础编译工具 ==="
# build-essential：包含gcc、g++编译器和make工具，是源码编译的基础
# cmake：跨平台构建工具，用于生成OpenCV的Makefile（*手动安装）
# git：版本控制工具，用于克隆OpenCV源码仓库（*手动安装）
# pkg-config：帮助编译器查找库文件和头文件路径的配置工具
apt install -y \
    build-essential \
    pkg-config

# 安装图形界面依赖（用于OpenCV的图像显示功能）
echo -e "\n=== 安装图形界面依赖 ==="
# libgtk-3-dev：GTK3图形库开发包，支持OpenCV的imshow()显示图像窗口
# libgtk2.0-dev:
apt install -y \
    libgtk-3-dev \
    libgtk2.0-dev

# 安装图像格式支持库（用于读写各种图像文件）
echo -e "\n=== 安装图像格式支持库 ==="
# libjpeg-dev：JPEG图像格式编解码库
# libpng-dev：PNG图像格式编解码库
# libtiff-dev：TIFF图像格式编解码库
# libopenexr-dev：OpenEXR高动态范围图像格式支持库
# libwebp-dev：WebP高效图像格式支持库
apt install -y \
    libjpeg-dev \
    libpng-dev \
    libtiff-dev \
    libopenexr-dev \
    libwebp-dev

# 安装音视频处理依赖（用于视频读写和实时处理）
echo -e "\n=== 安装音视频处理依赖 ==="
# libavcodec-dev：FFmpeg的音视频编解码核心库
# libavformat-dev：FFmpeg的音视频格式解析库（处理MP4/AVI等容器）
# libswscale-dev：FFmpeg的图像缩放和像素格式转换库
# libavutil-dev：FFmpeg的基础工具库（内存管理、数学运算等）
# libswresample-dev：音频重采样库（处理采样率、声道转换）
# libavfilter-dev：FFmpeg的音视频滤镜库（如降噪、裁剪）
# libv4l-dev：视频4Linux库，支持USB摄像头等硬件设备访问
# libxvidcore-dev：XviD视频编码库，支持MPEG-4格式编码
# libx264-dev：H.264视频编码库，支持高清视频压缩
apt install -y \
    libavcodec-dev \
    libavformat-dev \
    libswscale-dev \
    libavutil-dev \
    libswresample-dev \
    libavfilter-dev \
    libv4l-dev \
    libxvidcore-dev \
    libx264-dev

# 安装并行计算与优化库（提升OpenCV处理性能）
echo -e "\n=== 安装并行计算与优化库 ==="
# libtbb2：Intel TBB库的运行时文件，支持多线程并行计算（*手动安装）
# libtbb-dev：Intel TBB库的开发文件，用于编译多线程优化的程序（*手动安装）
# libatlas-base-dev：Atlas线性代数库，优化矩阵运算等数学操作（*手动安装）
# gfortran：Fortran编译器，部分科学计算库依赖它
apt install -y \
    gfortran

# # 安装Python支持（用于OpenCV的Python接口）
# echo -e "\n=== 安装Python支持（可选） ==="
# # python3-dev：Python3开发包，包含编译Python扩展的头文件（*手动安装）
# # python3-numpy：Python数值计算库，OpenCV Python接口的基础依赖（*手动安装）
# apt install -y \
#     python3-dev \
#     python3-numpy

# 安装特殊相机支持库（用于专业相机设备）
echo -e "\n=== 安装相机支持库（可选） ==="
# libdc1394-22-dev：IEEE 1394火线相机接口库，支持工业相机设备
apt install -y \
    libdc1394-22-dev

echo -e "\n=== 所有依赖包安装完成 ==="
echo "现在可以开始编译OpenCV源码了"
    